package com.ryhx.pay.channel.app.paybank.service;// 包名所在行

import java.util.List;
import java.util.Map;

import com.ryhx.pay.channel.app.model.PayBank;//model名引入所在行
import com.ryhx.pay.common.exceptions.BizException;//Exception名引入所在行

public interface PayBankService{

    /**
    * 根据主键获取实体
    * @param entityId 主键
    * @return
    */
    PayBank getPayBank(Long entityId) throws BizException;

    /**
    * 调用mybatis selectOne 如果查询返回超过1条 就会发生异常 请自行处理
    * @param query 入参 调用MapUtil构造
    * @return
    */
    PayBank selectOnePayBankWillThrowException(Map<String, Object> query) throws BizException;
    /**
    * 获取满足条件的第一条数据
    * @param query 入参 调用MapUtil构造
    * @return
    */
    PayBank selectFirstPayBank(Map<String, Object> query) throws BizException;
    /**
    * 查询实体集合
    * @param query
    * @return
    */
    List<PayBank> getPayBankList(Map<String, Object> query) throws BizException;

    /**
    * 查询实体集合的个数
    * @param query
    * @return
    */
    Integer getPayBankListCount(Map<String, Object> query) throws BizException;

    /**
    * 保存实体 保证payBank 主键为空
    * @param payBank
    * @return
    */
    Long  insertPayBank(PayBank payBank) throws BizException;

    /**
    * 智能保存实体 payBank必须存在主键或者唯一键 根据这个键值查询库里是否存在此条记录 存在则进行替换老的记录 不存在则插入新记录
    * @param payBank
    * @return
    */
    Long  replacePayBank(PayBank payBank) throws BizException;

    /**
    * 更新实体 保证实体中的主键不为空
    * @param payBank
    */
    int updatePayBank(PayBank payBank) throws BizException;

    /**
    * 更新实体 null字段忽略更新
    * @param payBank
    */
    int updatePayBankWithoutNull(PayBank payBank) throws BizException;

    /**
    * 更新实体 自定义条件
    * @param payBank   not empty
    * @param whereSql not blank 有sql注入风险 请开发人员自行保证安全性
    */
    int updatePayBankByWhereSql(Map<String,Object> payBank,String whereSql) throws BizException;

    /**
    * 根据主键删除实体
    * @param entityId
    */
    int deletePayBank(Long entityId) throws BizException;
    /**
    * 删除实体集合
    * @param payBank 如果字段值不为空 将作为查询条件
    */
    int deletePayBankList(Map<String,Object> payBank) throws BizException;

    /**
    * 根据自定义条件删除实体
    * @param whereSql not blank  有sql注入风险 请开发人员自行保证安全性
    */
    int deletePayBankByWhereSql(String whereSql) throws BizException;

    /**
    * 清空实体表
    */
    int truncatePayBank() throws BizException;

    /**
    *  批量保存实体，保证list中的实体 主键为空
    * @param list
    */
    int batchInsertPayBank(List<PayBank> list) throws BizException;

    /**
    *  智能批量保存实体，payBank必须存在主键或者唯一键 根据这个键值查询库里是否存在此条记录 存在则替换老的记录 不存在则插入新记录
    * @param list
    */
    int batchReplacePayBank(List<PayBank> list) throws BizException;

    /**
    * 批量更新实体 保证list中的实体 主键不为空
    * @param list
    */
    int batchUpdatePayBank(List<PayBank> list) throws BizException;

    /**
    * 根据主键list 批量删除实体
    * @param idList
    */
    int batchDeletePayBank(List<Long> idList) throws BizException;

    /**
    * 根据主键list 批量删除实体
    * @param payBankList 如果字段值不为空 将作为查询条件
    */
    int batchDeletePayBankList(List<PayBank> payBankList) throws BizException;

}
